package com.hui.service;

import com.hui.dao.ClassDao;
import com.hui.entity.Class;
import com.hui.service.ClassService;
import com.hui.util.DaoFactory;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @Auther: 李昭辉
 * @Date: 2021/07/09/14:05
 * @Description: 班级类 业务层实现类
 */
public class ClassServiceImpl implements ClassService {
    private ClassDao classDao = DaoFactory.getClassDao();

    @Override
    public List<Class> getAllClass() {
        return classDao.getAllClass();
    }

    @Override
    public List<Class> getClassById(int id) {
        return classDao.getClassById(id);
    }

    @Override
    public boolean delClass(int id) {
        // 如果该班级有学生，则不能删除
        int classTotal = classDao.getClassTotal(id);
        if (classTotal > 0) {
            return false;
        }
        // 执行删除操作
        return classDao.delClass(id);
    }

    @Override
    public boolean addClass(Class c) {
        // 年级相同的情况下不能出现相同的班级
        int count = classDao.getCountByClassAndGrade(c.getClassName(), c.getGrade());
        if (count == 0) {
            return classDao.addClass(c);
        }
        return false;
    }

    @Override
    public boolean updateClass(Class c) {
        // 根据id获取原来的班级信息
        Class oldClass = classDao.getClassById(c.getId()).get(0);
        // 如果班级与年纪信息都没修改，可以不用判断，直接修改班级信息
        if (oldClass.getClassName().equals(c.getClassName()) && oldClass.getGrade().equals(c.getGrade())) {
            return classDao.updateClass(c);
        }
        // 如果班级或年纪任一一个修改了，就要判断不能出现相同的年级与班级名称
        int count = classDao.getCountByClassAndGrade(c.getClassName(), c.getGrade());
        if (count == 0) {
            return classDao.updateClass(c);
        }
        return false;
    }

    @Override
    public boolean plusOne(int id) {
        return classDao.plusOne(id);
    }

    @Override
    public boolean minusOne(int id) {
        return classDao.minusOne(id);
    }
}
